File Handling Functions (ফাইল হ্যান্ডলিং ফাংশনস)

Computer Programming - সি স্ট্যান্ডার্ড লাইব্রেরি রেফারেন্স (C Standard Library Reference)
218
218

File Handling Functions (ফাইল হ্যান্ডলিং ফাংশনস)

সি প্রোগ্রামিং ভাষায় ফাইল হ্যান্ডলিং ফাংশনগুলো ব্যবহার করে প্রোগ্রামে ফাইল তৈরি, পড়া, লেখা, ফাইল থেকে ডেটা নেওয়া, এবং ফাইল বন্ধ করা যায়। ফাইল হ্যান্ডলিংয়ের জন্য সি স্ট্যান্ডার্ড লাইব্রেরির stdio.h হেডার ফাইলের ফাংশনগুলো ব্যবহার করা হয়।

নিচে ফাইল হ্যান্ডলিং ফাংশন এবং তাদের কাজ সম্পর্কে বিস্তারিত আলোচনা করা হলো:


১. fopen() – ফাইল খোলা

fopen() ফাংশনটি একটি ফাইল খোলার জন্য ব্যবহৃত হয়। এটি একটি ফাইল পয়েন্টার রিটার্ন করে, যা পরবর্তী ফাইল অপারেশনগুলিতে ব্যবহৃত হয়। ফাইলটি বিভিন্ন মোডে খোলা যেতে পারে যেমন শুধুমাত্র পড়া (r), লেখা (w), এবং অ্যাপেন্ড (a)।

সিঙ্কট্যাক্স:

FILE *fopen(const char *filename, const char *mode);

ফাইল মোড:

  • "r" – শুধুমাত্র পড়ার জন্য ফাইল খোলে। ফাইলটি থাকা বাধ্যতামূলক।
  • "w" – লেখার জন্য ফাইল খোলে। ফাইলটি না থাকলে তৈরি করে, থাকলে মুছে ফেলে।
  • "a" – ফাইলের শেষে লেখার জন্য খোলে। ফাইলটি না থাকলে তৈরি করে।
  • "rb", "wb", "ab" – বাইনারি মোডে ফাইল খোলে।

উদাহরণ:

#include <stdio.h>

int main() {
    FILE *file = fopen("example.txt", "w");
    if (file == NULL) {
        printf("File not opened.\n");
        return 1;
    }
    fprintf(file, "Hello, World!\n");  // ফাইলে লেখা
    fclose(file);  // ফাইল বন্ধ করা
    return 0;
}

২. fclose() – ফাইল বন্ধ করা

fclose() ফাংশনটি ফাইল বন্ধ করতে ব্যবহৃত হয়। এটি ফাইলের সাথে সম্পর্কিত সমস্ত রিসোর্স মুক্ত করে এবং ফাইল পয়েন্টারটি অবৈধ করে দেয়।

সিঙ্কট্যাক্স:

int fclose(FILE *file_pointer);

উদাহরণ:

#include <stdio.h>

int main() {
    FILE *file = fopen("example.txt", "w");
    if (file != NULL) {
        fprintf(file, "Hello, World!\n");
        fclose(file);  // ফাইল বন্ধ করা
    }
    return 0;
}

৩. fread() – ফাইল থেকে ডেটা পড়া

fread() ফাংশনটি একটি ফাইল থেকে নির্দিষ্ট পরিমাণ ডেটা পড়তে ব্যবহৃত হয়। এটি সাধারণত বাইনারি ফাইল থেকে ডেটা পড়তে ব্যবহৃত হয়।

সিঙ্কট্যাক্স:

size_t fread(void *ptr, size_t size, size_t count, FILE *file_pointer);
  • ptr – যেখানে ডেটা স্টোর হবে (বাফার)।
  • size – প্রতি এলিমেন্টের আকার।
  • count – মোট এলিমেন্টের সংখ্যা।
  • file_pointer – ফাইল পয়েন্টার।

উদাহরণ:

#include <stdio.h>

int main() {
    FILE *file = fopen("example.bin", "rb");
    if (file == NULL) {
        printf("File not found.\n");
        return 1;
    }
    int buffer[10];
    fread(buffer, sizeof(int), 10, file);
    fclose(file);
    for (int i = 0; i < 10; i++) {
        printf("%d ", buffer[i]);
    }
    return 0;
}

৪. fwrite() – ফাইলে ডেটা লেখা

fwrite() ফাংশনটি ফাইলে ডেটা লেখার জন্য ব্যবহৃত হয়। এটি সাধারণত বাইনারি ফাইলের জন্য ব্যবহৃত হয়।

সিঙ্কট্যাক্স:

size_t fwrite(const void *ptr, size_t size, size_t count, FILE *file_pointer);
  • ptr – যেখান থেকে ডেটা লেখা হবে।
  • size – প্রতি এলিমেন্টের আকার।
  • count – মোট এলিমেন্টের সংখ্যা।
  • file_pointer – ফাইল পয়েন্টার।

উদাহরণ:

#include <stdio.h>

int main() {
    FILE *file = fopen("example.bin", "wb");
    if (file == NULL) {
        printf("File not opened.\n");
        return 1;
    }
    int data[] = {1, 2, 3, 4, 5};
    fwrite(data, sizeof(int), 5, file);
    fclose(file);
    return 0;
}

৫. fprintf() – ফাইলে ফরম্যাটেড আউটপুট লেখা

fprintf() ফাংশনটি ফাইলের মধ্যে ফরম্যাটেড আউটপুট লেখার জন্য ব্যবহৃত হয়। এটি printf() এর মতো, তবে আউটপুট কনসোলের পরিবর্তে ফাইলে লেখা হয়।

সিঙ্কট্যাক্স:

int fprintf(FILE *file_pointer, const char *format, ...);

উদাহরণ:

#include <stdio.h>

int main() {
    FILE *file = fopen("example.txt", "w");
    if (file == NULL) {
        printf("File not opened.\n");
        return 1;
    }
    fprintf(file, "Name: %s\nAge: %d\n", "Alice", 30);
    fclose(file);
    return 0;
}

৬. fgets() – ফাইল থেকে স্ট্রিং পড়া

fgets() ফাংশনটি ফাইল থেকে একটি লাইন বা নির্দিষ্ট সংখ্যক ক্যারেক্টার পড়তে ব্যবহৃত হয়। এটি সাধারণত টেক্সট ফাইল থেকে ডেটা পড়তে ব্যবহৃত হয়।

সিঙ্কট্যাক্স:

char *fgets(char *str, int n, FILE *file_pointer);

উদাহরণ:

#include <stdio.h>

int main() {
    FILE *file = fopen("example.txt", "r");
    char str[100];
    if (file == NULL) {
        printf("File not found.\n");
        return 1;
    }
    while (fgets(str, sizeof(str), file) != NULL) {
        printf("%s", str);
    }
    fclose(file);
    return 0;
}

৭. fputs() – ফাইলে স্ট্রিং লেখা

fputs() ফাংশনটি একটি স্ট্রিং ফাইলে লেখার জন্য ব্যবহৃত হয়। এটি fprintf() এর তুলনায় দ্রুত এবং সরাসরি স্ট্রিং লেখার জন্য উপযুক্ত।

সিঙ্কট্যাক্স:

int fputs(const char *str, FILE *file_pointer);

উদাহরণ:

#include <stdio.h>

int main() {
    FILE *file = fopen("example.txt", "w");
    if (file == NULL) {
        printf("File not opened.\n");
        return 1;
    }
    fputs("Hello, World!\n", file);
    fclose(file);
    return 0;
}

সারসংক্ষেপ

ফাংশনকাজ
fopen()ফাইল খোলে এবং একটি পয়েন্টার রিটার্ন করে
fclose()ফাইল বন্ধ করে
fread()ফাইল থেকে ডেটা পড়ে
fwrite()ফাইলে ডেটা লেখে
fprintf()ফরম্যাটেড আউটপুট ফাইলে লেখে
fgets()ফাইল থেকে একটি স্ট্রিং পড়ে
fputs()ফাইলে একটি স্ট্রিং লেখে

এই ফাংশনগুলো সি প্রোগ্রামে ফাইল হ্যান্ডলিং সহজ এবং কার্যকর করে তোলে। এগুলোর মাধ্যমে প্রোগ্রামাররা ফাইল তৈরি, মডিফাই এবং রিড করতে পারেন, যা প্রোগ্রামের জন্য ডেটা সংরক্ষণ এবং পরিচালনায় সহায়ক।

common.content_added_by

fopen(), fclose() এর মাধ্যমে ফাইল খোলা এবং বন্ধ করা

197
197

fopen() এবং fclose() ফাংশনের মাধ্যমে ফাইল খোলা এবং বন্ধ করা

সি প্রোগ্রামিং ভাষায় ফাইল পরিচালনার জন্য fopen() এবং fclose() ফাংশনটি ব্যবহৃত হয়। fopen() ফাংশনটি ফাইল খোলে এবং fclose() ফাংশনটি ফাইল বন্ধ করে। ফাইল অপারেশনের জন্য stdio.h হেডার ফাইলটি ব্যবহার করা হয়।


fopen() – ফাইল খোলা

fopen() ফাংশনটি একটি ফাইল খোলার জন্য ব্যবহৃত হয় এবং একটি FILE পয়েন্টার রিটার্ন করে। এই পয়েন্টারটি ফাইলের অবস্থান নির্দেশ করে এবং ফাইলের সাথে কার্যক্রম পরিচালনার জন্য ব্যবহৃত হয়। ফাইলটি খোলার সময় fopen()-এ দুটি প্যারামিটার দেওয়া হয়:

  1. filename – ফাইলের নাম, যা একটি স্ট্রিং হিসেবে দেওয়া হয়।
  2. mode – ফাইল অপারেশনের মোড, যা নির্ধারণ করে ফাইলটি কীভাবে ব্যবহার হবে (যেমন পড়া, লেখা ইত্যাদি)।

ফাইল মোডসমূহ:

  • "r" – শুধুমাত্র পড়ার জন্য (ফাইলটি অবশ্যই বিদ্যমান থাকতে হবে)।
  • "w" – লেখার জন্য (ফাইলটি বিদ্যমান না থাকলে নতুন ফাইল তৈরি হবে; বিদ্যমান থাকলে পুরানো ডেটা মুছে যাবে)।
  • "a" – ফাইলের শেষে লেখার জন্য (ফাইলটি বিদ্যমান না থাকলে নতুন ফাইল তৈরি হবে)।
  • "r+" – পড়া এবং লেখার জন্য (ফাইলটি বিদ্যমান থাকতে হবে)।
  • "w+" – পড়া এবং লেখার জন্য, বিদ্যমান ডেটা মুছে নতুনভাবে লেখা (ফাইলটি বিদ্যমান না থাকলে নতুন ফাইল তৈরি হবে)।
  • "a+" – পড়া এবং ফাইলের শেষে লেখার জন্য (ফাইলটি বিদ্যমান না থাকলে নতুন ফাইল তৈরি হবে)।

সিঙ্কট্যাক্স:

FILE *fopen(const char *filename, const char *mode);

উদাহরণ:

#include <stdio.h>

int main() {
    FILE *file;

    // "example.txt" ফাইলটি লেখার জন্য খোলা
    file = fopen("example.txt", "w");
    if (file == NULL) {
        printf("Error opening file.\n");
        return 1;
    }

    fprintf(file, "Hello, World!\n");  // ফাইলে লেখা
    printf("File opened and written successfully.\n");

    // ফাইল বন্ধ করা
    fclose(file);
    return 0;
}

fclose() – ফাইল বন্ধ করা

fclose() ফাংশনটি একটি খোলা ফাইল বন্ধ করতে ব্যবহৃত হয়। এটি ফাইলের জন্য ব্যবহৃত সমস্ত রিসোর্স মুক্ত করে এবং ফাইল পয়েন্টারটি অবৈধ করে দেয়। ফাইল বন্ধ না করলে ফাইলের তথ্য হারিয়ে যেতে পারে এবং মেমোরি লিক হতে পারে, তাই প্রতিবার ফাইল ব্যবহারের পরে fclose() ব্যবহার করা উচিত।

সিঙ্কট্যাক্স:

int fclose(FILE *file_pointer);

উদাহরণ:

#include <stdio.h>

int main() {
    FILE *file;

    // "example.txt" ফাইলটি লেখার জন্য খোলা
    file = fopen("example.txt", "w");
    if (file == NULL) {
        printf("Error opening file.\n");
        return 1;
    }

    fprintf(file, "Hello, World!\n");  // ফাইলে লেখা
    printf("File opened and written successfully.\n");

    // ফাইল বন্ধ করা
    if (fclose(file) == 0) {
        printf("File closed successfully.\n");
    } else {
        printf("Error closing file.\n");
    }

    return 0;
}

উদাহরণ: ফাইল পড়া এবং লেখা

নিচে fopen() এবং fclose() ফাংশনের সাহায্যে ফাইল খোলা, লেখা, এবং পড়ার উদাহরণ দেওয়া হলো।

#include <stdio.h>

int main() {
    FILE *file;
    char buffer[100];

    // "example.txt" ফাইলটি লেখার জন্য খোলা
    file = fopen("example.txt", "w");
    if (file == NULL) {
        printf("Error opening file for writing.\n");
        return 1;
    }

    // ফাইলে লেখা
    fprintf(file, "Hello, World!\nWelcome to C programming.\n");
    fclose(file);  // ফাইল বন্ধ করা

    // "example.txt" ফাইলটি পড়ার জন্য খোলা
    file = fopen("example.txt", "r");
    if (file == NULL) {
        printf("Error opening file for reading.\n");
        return 1;
    }

    // ফাইল থেকে পড়া এবং আউটপুটে প্রদর্শন
    while (fgets(buffer, sizeof(buffer), file) != NULL) {
        printf("%s", buffer);
    }

    fclose(file);  // ফাইল বন্ধ করা
    return 0;
}

সারসংক্ষেপ

  • fopen() ফাংশনটি ফাইল খোলার জন্য ব্যবহৃত হয় এবং এটি একটি FILE পয়েন্টার রিটার্ন করে।
  • fclose() ফাংশনটি ফাইল বন্ধ করার জন্য ব্যবহৃত হয়, যা ফাইলের জন্য বরাদ্দকৃত রিসোর্স মুক্ত করে।
  • ফাইল পরিচালনার সময় প্রতিবার ফাইল ব্যবহারের পরে অবশ্যই fclose() ব্যবহার করতে হবে, যাতে ডেটা সঠিকভাবে সংরক্ষিত হয় এবং মেমোরি লিক না হয়।

fopen() এবং fclose() ফাংশনগুলো ফাইল অপারেশনের জন্য খুবই গুরুত্বপূর্ণ এবং এগুলোর সঠিক ব্যবহার ফাইল ব্যবস্থাপনায় সঠিক কার্যকারিতা নিশ্চিত করে।

common.content_added_by

fread(), fwrite(), fprintf() এর মাধ্যমে ফাইল থেকে ডেটা পড়া এবং লেখা

189
189

fread(), fwrite(), এবং fprintf() এর মাধ্যমে ফাইল থেকে ডেটা পড়া এবং লেখা

সি প্রোগ্রামিং ভাষায় fread(), fwrite(), এবং fprintf() ফাংশনগুলো ফাইলের মাধ্যমে ডেটা পড়া এবং লেখা পরিচালনা করার জন্য ব্যবহৃত হয়। এগুলো stdio.h হেডার ফাইলের অংশ এবং বাইনারি বা টেক্সট ফাইল থেকে ডেটা ম্যানিপুলেট করার জন্য বিশেষভাবে ব্যবহার করা হয়।

এখানে এই ফাংশনগুলোর ব্যবহার এবং তাদের কার্যকারিতা বিস্তারিতভাবে আলোচনা করা হলো।


১. fread() – ফাইল থেকে ডেটা পড়া

fread() ফাংশনটি ফাইল থেকে নির্দিষ্ট পরিমাণ ডেটা পড়ে এবং এটি একটি বাফারে স্টোর করে। এটি সাধারণত বাইনারি ফাইল থেকে ডেটা পড়ার জন্য ব্যবহৃত হয়, তবে এটি টেক্সট ফাইল থেকেও পড়তে পারে। fread() ফাংশনটি প্রতিটি এলিমেন্টের জন্য ডেটা পড়ে এবং সেগুলো একটি নির্দিষ্ট বাফারে জমা করে।

সিঙ্কট্যাক্স:

size_t fread(void *ptr, size_t size, size_t count, FILE *file_pointer);
  • ptr – যেখান থেকে ডেটা পড়া হবে (বাফার)।
  • size – প্রতিটি এলিমেন্টের আকার।
  • count – মোট এলিমেন্টের সংখ্যা।
  • file_pointer – ফাইল পয়েন্টার, যেখানে থেকে ডেটা পড়া হবে।

উদাহরণ:

#include <stdio.h>

int main() {
    FILE *file = fopen("data.bin", "rb");  // বাইনারি ফাইল খোলা
    if (file == NULL) {
        printf("File not found.\n");
        return 1;
    }

    int buffer[5];
    fread(buffer, sizeof(int), 5, file);  // ফাইল থেকে 5টি ইন্ট পড়া

    for (int i = 0; i < 5; i++) {
        printf("%d ", buffer[i]);  // পড়া ডেটা আউটপুট
    }

    fclose(file);
    return 0;
}

এখানে fread() ফাংশনটি 5টি ইন্টিজারের জন্য মেমোরি বরাদ্দ করেছে এবং data.bin ফাইল থেকে ডেটা পড়েছে।


২. fwrite() – ফাইলে ডেটা লেখা

fwrite() ফাংশনটি ফাইলে ডেটা লেখার জন্য ব্যবহৃত হয়। এটি বাইনারি ফাইলের জন্য উপযোগী এবং ফাইলের মধ্যে নির্দিষ্ট পরিমাণ ডেটা লেখে।

সিঙ্কট্যাক্স:

size_t fwrite(const void *ptr, size_t size, size_t count, FILE *file_pointer);
  • ptr – যেখান থেকে ডেটা লেখা হবে।
  • size – প্রতি এলিমেন্টের আকার।
  • count – মোট এলিমেন্টের সংখ্যা।
  • file_pointer – ফাইল পয়েন্টার, যেখানে ডেটা লেখা হবে।

উদাহরণ:

#include <stdio.h>

int main() {
    FILE *file = fopen("data.bin", "wb");  // বাইনারি ফাইল খোলা
    if (file == NULL) {
        printf("File not opened.\n");
        return 1;
    }

    int data[] = {1, 2, 3, 4, 5};
    fwrite(data, sizeof(int), 5, file);  // ফাইলে 5টি ইন্ট লেখা

    fclose(file);
    return 0;
}

এখানে fwrite() ফাংশনটি 5টি ইন্টিজার data অ্যারের মধ্যে থেকে data.bin ফাইলে লিখেছে।


৩. fprintf() – ফাইলে ফরম্যাটেড আউটপুট লেখা

fprintf() ফাংশনটি কনসোলের আউটপুটের মতো ফাইলেও ফরম্যাটেড আউটপুট লেখার জন্য ব্যবহৃত হয়। এটি printf() এর মতোই কাজ করে, তবে আউটপুট কনসোলের পরিবর্তে ফাইলে লেখা হয়।

সিঙ্কট্যাক্স:

int fprintf(FILE *file_pointer, const char *format, ...);
  • file_pointer – ফাইল পয়েন্টার, যেখানে আউটপুট লেখা হবে।
  • format – ফরম্যাট স্ট্রিং, যা আউটপুটের স্টাইল নির্ধারণ করে।

উদাহরণ:

#include <stdio.h>

int main() {
    FILE *file = fopen("output.txt", "w");  // ফাইল লেখার জন্য খোলা
    if (file == NULL) {
        printf("File not opened.\n");
        return 1;
    }

    fprintf(file, "Name: %s\nAge: %d\n", "John", 30);  // ফরম্যাটেড আউটপুট ফাইলে লেখা

    fclose(file);
    return 0;
}

এখানে fprintf() ফাংশনটি output.txt ফাইলে "Name: John" এবং "Age: 30" ফরম্যাটে আউটপুট লিখেছে।


সারসংক্ষেপ

ফাংশনকাজসিঙ্কট্যাক্স
fread()ফাইল থেকে ডেটা পড়াsize_t fread(void *ptr, size_t size, size_t count, FILE *file_pointer);
fwrite()ফাইলে ডেটা লেখাsize_t fwrite(const void *ptr, size_t size, size_t count, FILE *file_pointer);
fprintf()ফাইলের মাধ্যমে ফরম্যাটেড আউটপুট লেখাint fprintf(FILE *file_pointer, const char *format, ...);

এই ফাংশনগুলোর মাধ্যমে সি প্রোগ্রামে ফাইল থেকে ডেটা পড়া এবং ফাইলে ডেটা লেখা যায়। fread() এবং fwrite() বাইনারি ফাইলের জন্য ব্যবহৃত হয়, যখন fprintf() ফরম্যাটেড টেক্সট আউটপুট ফাইলে লেখার জন্য ব্যবহৃত হয়।

common.content_added_by

ফাইল পয়েন্টার এবং ফাইল মোড: "r", "w", "a"

184
184

ফাইল পয়েন্টার এবং ফাইল মোড: "r", "w", "a"

সি প্রোগ্রামিং ভাষায় ফাইল পয়েন্টার এবং ফাইল মোড গুরুত্বপূর্ণ ভূমিকা পালন করে ফাইল ইনপুট এবং আউটপুট অপারেশন পরিচালনার ক্ষেত্রে। ফাইল পয়েন্টার একটি বিশেষ ধরনের পয়েন্টার যা একটি ফাইলের অবস্থান নির্দেশ করে এবং ফাইল মোডগুলো নির্ধারণ করে কিভাবে ফাইলটি খুলবে এবং কিভাবে তার সাথে কাজ করবে।

১. ফাইল পয়েন্টার

ফাইল পয়েন্টার হলো একটি পয়েন্টার যা ফাইলের অবস্থান বা পয়েন্টারের মাধ্যমে ফাইলের মধ্যে ডেটা অ্যাক্সেস করতে ব্যবহৃত হয়। যখন একটি ফাইল খোলা হয়, তখন এটি একটি পয়েন্টার প্রদান করে যা ফাইলের প্রথম অক্ষরের অবস্থানকে নির্দেশ করে।

FILE টাইপের ফাইল পয়েন্টার ব্যবহার করে ফাইলের সাথে কাজ করা হয়। এটি stdio.h হেডার ফাইলের অংশ।

উদাহরণ:

FILE *file;  // ফাইল পয়েন্টার ডিক্লেয়ার করা
file = fopen("example.txt", "r");  // ফাইল খোলা

এখানে, file একটি ফাইল পয়েন্টার যা example.txt ফাইলকে নির্দেশ করছে। ফাইল মোড "r" (পড়ার জন্য) ব্যবহার করা হয়েছে।


২. ফাইল মোড: "r", "w", "a"

ফাইল মোডগুলি ফাইল খুলতে ব্যবহৃত হয় এবং ফাইলের সাথে কি ধরনের অপারেশন করা যাবে তা নির্ধারণ করে। সবচেয়ে প্রচলিত তিনটি ফাইল মোড হলো "r", "w", এবং "a"

১. "r" (পড়ার জন্য)

"r" ফাইল মোডটি শুধুমাত্র পড়ার জন্য ফাইল খুলতে ব্যবহৃত হয়। এই মোডে, ফাইলটি যদি থাকে তবে সেটি খোলা হয় এবং আপনি ফাইলটি পড়তে পারবেন। কিন্তু যদি ফাইলটি না থাকে, তবে fopen() ফাংশন NULL রিটার্ন করবে।

সিঙ্কট্যাক্স:

FILE *fopen(const char *filename, "r");

উদাহরণ:

#include <stdio.h>

int main() {
    FILE *file = fopen("example.txt", "r");
    
    if (file == NULL) {
        printf("File not found\n");
        return 1;
    }

    // ফাইল পড়া
    char ch;
    while ((ch = fgetc(file)) != EOF) {
        printf("%c", ch);
    }

    fclose(file);  // ফাইল বন্ধ
    return 0;
}

এখানে, "r" মোডে ফাইলটি খোলা হয়েছে এবং fgetc() ফাংশন দ্বারা ফাইল থেকে ক্যারেক্টার পড়া হয়েছে।

২. "w" (লেখার জন্য)

"w" ফাইল মোডটি লেখার জন্য ব্যবহৃত হয়। এই মোডে, যদি ফাইলটি আগে থেকে বিদ্যমান থাকে, তবে এটি মুছে দেয় এবং নতুনভাবে লিখতে শুরু হয়। যদি ফাইলটি না থাকে, তবে একটি নতুন ফাইল তৈরি করা হয়।

সিঙ্কট্যাক্স:

FILE *fopen(const char *filename, "w");

উদাহরণ:

#include <stdio.h>

int main() {
    FILE *file = fopen("example.txt", "w");

    if (file == NULL) {
        printf("File could not be opened\n");
        return 1;
    }

    // ফাইলে লেখা
    fprintf(file, "Hello, World!\n");

    fclose(file);  // ফাইল বন্ধ
    return 0;
}

এখানে, "w" মোডে ফাইলটি খোলা হয়েছে এবং fprintf() ফাংশন ব্যবহার করে ফাইলে লেখা হয়েছে।

৩. "a" (অ্যাপেন্ড/যোগ করার জন্য)

"a" ফাইল মোডটি অ্যাপেন্ড (অর্থাৎ ফাইলের শেষে নতুন ডেটা যোগ করা) করতে ব্যবহৃত হয়। এই মোডে, যদি ফাইলটি আগে থেকেই থাকে, তবে নতুন লেখা ফাইলের শেষে যোগ করা হয়। এবং যদি ফাইলটি না থাকে, তবে একটি নতুন ফাইল তৈরি হয়।

সিঙ্কট্যাক্ট:

FILE *fopen(const char *filename, "a");

উদাহরণ:

#include <stdio.h>

int main() {
    FILE *file = fopen("example.txt", "a");

    if (file == NULL) {
        printf("File could not be opened\n");
        return 1;
    }

    // ফাইলে যোগ করা
    fprintf(file, "Appending a new line to the file.\n");

    fclose(file);  // ফাইল বন্ধ
    return 0;
}

এখানে, "a" মোডে ফাইলটি খোলা হয়েছে এবং fprintf() ফাংশন ব্যবহার করে ফাইলে নতুন লাইন যোগ করা হয়েছে। পুরনো ডেটা অপরিবর্তিত থাকে।


সারসংক্ষেপ:

ফাইল মোডবর্ণনাব্যবহার উদাহরণ
"r"শুধুমাত্র ফাইল পড়ার জন্য। ফাইলটি যদি না থাকে, তবে NULL রিটার্ন করবে।fopen("file.txt", "r");
"w"লেখার জন্য ফাইল খোলবে। ফাইলটি আগে থেকে থাকলে মুছে ফেলা হবে এবং নতুন করে লেখা হবে।fopen("file.txt", "w");
"a"ফাইলের শেষে ডেটা যোগ করতে ব্যবহৃত হয়। ফাইলটি না থাকলে একটি নতুন ফাইল তৈরি হবে।fopen("file.txt", "a");
  • "r": ফাইলটি পড়তে ব্যবহৃত হয়, তবে ফাইলটি যদি না থাকে, তাহলে এটি NULL রিটার্ন করবে।
  • "w": লেখার জন্য ফাইল খোলে এবং ফাইলটি মুছে দেয় (যদি থাকে)।
  • "a": ফাইলের শেষে ডেটা যোগ করার জন্য ব্যবহৃত হয় এবং ফাইলের পূর্বের ডেটা অপরিবর্তিত থাকে।

ফাইল মোডের মাধ্যমে আপনি ফাইলের সাথে কী ধরনের অপারেশন করতে চান তা নির্ধারণ করতে পারবেন।

common.content_added_by

fseek(), ftell(), এবং rewind() এর মাধ্যমে ফাইল নেভিগেশন

235
235

fseek(), ftell(), এবং rewind() এর মাধ্যমে ফাইল নেভিগেশন

সি প্রোগ্রামিং ভাষায় ফাইলের মধ্যে ডেটা নেভিগেট করার জন্য fseek(), ftell(), এবং rewind() ফাংশনগুলো ব্যবহৃত হয়। এই ফাংশনগুলো ফাইলের মধ্যে পজিশন পরিবর্তন করতে সাহায্য করে, যা বিশেষ করে যখন আপনি ফাইলের কোনো নির্দিষ্ট অংশে পৌঁছাতে চান অথবা ফাইলের মধ্যে রিড/রাইট অপারেশন করতে চান।


১. fseek() – ফাইল পজিশন পরিবর্তন করা

fseek() ফাংশনটি একটি ফাইলের বর্তমান পজিশন পরিবর্তন করে। এটি ফাইলের একটি নির্দিষ্ট অবস্থানে (অথবা একটি শিফট হিসাবে) ফাইল পয়েন্টারকে স্থানান্তর করে।

সিঙ্কট্যাক্স:

int fseek(FILE *stream, long offset, int whence);
  • stream: এটি সেই ফাইল পয়েন্টার যা খোলা ফাইলকে নির্দেশ করে।
  • offset: এটি পজিশনের শিফট, এটি একটি ইন্টিজার সংখ্যা যা ফাইলের বর্তমান অবস্থান থেকে কতটা দূরত্বে যেতে হবে তা নির্দেশ করে।
  • whence: এটি শুরু করার পজিশন নির্ধারণ করে, এবং এর কিছু মান আছে:
    • SEEK_SET: ফাইলের শুরুর অবস্থান থেকে পজিশন হিসাব করা হবে।
    • SEEK_CUR: বর্তমান অবস্থান থেকে পজিশন হিসাব করা হবে।
    • SEEK_END: ফাইলের শেষ অবস্থান থেকে পজিশন হিসাব করা হবে।

উদাহরণ:

#include <stdio.h>

int main() {
    FILE *file = fopen("example.txt", "r");

    if (file == NULL) {
        printf("File not found.\n");
        return 1;
    }

    // ফাইলের 10 বাইট পরে পজিশন সেট করা
    fseek(file, 10, SEEK_SET);
    printf("Moved 10 bytes from the beginning.\n");

    // ফাইলের 5 বাইট পরে বর্তমান অবস্থান থেকে পজিশন সেট করা
    fseek(file, 5, SEEK_CUR);
    printf("Moved 5 bytes from the current position.\n");

    // ফাইলের শেষ থেকে 5 বাইট আগে পজিশন সেট করা
    fseek(file, -5, SEEK_END);
    printf("Moved 5 bytes backward from the end.\n");

    fclose(file);
    return 0;
}

এখানে, fseek() ফাংশনটি ফাইলের পজিশন পরিবর্তন করেছে, এবং আপনি ফাইলের বিভিন্ন অবস্থান থেকে শিফট করেছেন।


২. ftell() – বর্তমান পজিশন জানানো

ftell() ফাংশনটি একটি ফাইল পয়েন্টারের বর্তমান অবস্থান (পজিশন) প্রদান করে। এটি ফাইলের পজিশন হিসেবে একটি ইন্টিজার রিটার্ন করে, যা ফাইলের শুরুর অবস্থান থেকে পরিমাপ করা হয়।

সিঙ্কট্যাক্স:

long ftell(FILE *stream);
  • stream: এটি সেই ফাইল পয়েন্টার যা খোলা ফাইলকে নির্দেশ করে।

উদাহরণ:

#include <stdio.h>

int main() {
    FILE *file = fopen("example.txt", "r");

    if (file == NULL) {
        printf("File not found.\n");
        return 1;
    }

    // বর্তমান অবস্থান জানার জন্য ftell ব্যবহার
    long position = ftell(file);
    printf("Current position: %ld\n", position);

    fclose(file);
    return 0;
}

এখানে ftell() ফাংশনটি ফাইলের বর্তমান অবস্থান প্রদান করেছে, যা ফাইলের শুরুর স্থান থেকে কতটা দূরে অবস্থান করছে তা দেখায়।


৩. rewind() – ফাইলের পজিশন শুরুর অবস্থানে ফিরিয়ে আনা

rewind() ফাংশনটি ফাইলের পয়েন্টারকে ফাইলের শুরুর অবস্থানে ফিরিয়ে নিয়ে যায়। এটি fseek() এর মতো কাজ করে, তবে rewind() ফাংশনটি SEEK_SET থেকে শুরুর অবস্থানে সোজাসুজি চলে যায় এবং ftell() ফাংশনের মতো ফাইলের পজিশন রিটার্ন করে না।

সিঙ্কট্যাক্স:

void rewind(FILE *stream);
  • stream: এটি সেই ফাইল পয়েন্টার যা খোলা ফাইলকে নির্দেশ করে।

উদাহরণ:

#include <stdio.h>

int main() {
    FILE *file = fopen("example.txt", "r");

    if (file == NULL) {
        printf("File not found.\n");
        return 1;
    }

    // ফাইলের শুরুর অবস্থানে ফিরে যাওয়া
    rewind(file);
    printf("File position is reset to the beginning.\n");

    fclose(file);
    return 0;
}

এখানে rewind() ফাংশনটি ফাইলের পয়েন্টারকে শুরুর অবস্থানে ফিরিয়ে এনেছে।


সারসংক্ষেপ

ফাংশনবর্ণনাসিঙ্কট্যাক্স
fseek()ফাইল পয়েন্টারকে একটি নির্দিষ্ট অবস্থানে স্থানান্তরিত করে।fseek(FILE *stream, long offset, int whence);
ftell()ফাইলের বর্তমান অবস্থান প্রদান করে।long ftell(FILE *stream);
rewind()ফাইল পয়েন্টারকে শুরুর অবস্থানে ফিরিয়ে নিয়ে যায়।void rewind(FILE *stream);
  • fseek() ফাংশনটি ফাইলের পজিশন পরিবর্তন করে এবং ftell() বর্তমান পজিশন জানাতে ব্যবহৃত হয়।
  • rewind() ফাংশনটি ফাইলের পয়েন্টারকে শুরুর অবস্থানে ফিরিয়ে আনে।

এই ফাংশনগুলো ফাইলের মধ্যে ডেটা নেভিগেশন করতে সাহায্য করে, যা ফাইলের নির্দিষ্ট অংশে দ্রুত পৌঁছাতে এবং পুনরায় ফাইলটি প্রক্রিয়া করতে সহায়ক।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion